on:
  - pull_request
  - push

name: ci-oracle

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  tests:
    name: PHP ${{ matrix.php }}-${{ matrix.os }}

    env:
      extensions: oci8, pdo, pdo_oci
      XDEBUG_MODE: coverage, develop

    runs-on: ${{ matrix.os }}

    strategy:
      matrix:
        os:
          - ubuntu-latest

        php:
          - 7.4

    services:
      oci:
          image: wnameless/oracle-xe-11g-r2:latest
          ports:
              - 1521:1521
          options: --name=oci

    steps:
      - name: Checkout.
        uses: actions/checkout@v4

      - name: Install PHP with extensions.
        uses: shivammathur/setup-php@v2
        with:
          coverage: xdebug
          extensions: ${{ env.EXTENSIONS }}
          ini-values: date.timezone='UTC'
          php-version: ${{ matrix.php }}
          tools: composer:v2, pecl

      - name: Update composer.
        run: composer self-update

      - name: Install dependencies with composer.
        run: composer update --prefer-dist --no-interaction --no-progress --optimize-autoloader --ansi

      - name: Run Oracle tests with PHPUnit and generate coverage.
        run: vendor/bin/phpunit --group oci --coverage-clover=coverage.xml --colors=always

      - name: Upload coverage to Codecov.
        uses: codecov/codecov-action@v3
        with:
          file: ./coverage.xml
